package com.frame.common.security;

import java.sql.Timestamp;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
//import org.hibernate.HibernateException;
import org.springframework.dao.DataAccessResourceFailureException;

//import com.taskmanager.dao.TSysCharacterDAO;
//import com.taskmanager.dao.TSysMenuDAO;
//import com.taskmanager.dao.TSysPowerDAO;
//import com.taskmanager.dao.TSysPowerofactionDAO;
//import com.taskmanager.dao.TSysPowerofcharDAO;
//import com.taskmanager.dao.TSysPowersystemDAO;
//import com.taskmanager.dao.TSysPowersystemofcharDAO;
//import com.taskmanager.enums.StatusProperties;
//import com.taskmanager.exception.SystemRunException;
//import com.taskmanager.hibernate.TSysCharacter;
//import com.taskmanager.hibernate.TSysMenu;
//import com.taskmanager.hibernate.TSysPower;
//import com.taskmanager.hibernate.TSysPowerofaction;
//import com.taskmanager.hibernate.TSysPowerofchar;
//import com.taskmanager.hibernate.TSysPowersystem;
//import com.taskmanager.hibernate.TSysPowersystemofchar;
//import com.taskmanager.hibernate.TSysUser;
//import com.taskmanager.service.inter.PowerInter;
//import com.taskmanager.util.common.CTools;
//import com.taskmanager.util.page.PageBean;

public class PowerService {

//	private TSysMenuDAO menuDAO;// 菜单业务类
//	private TSysPowerofactionDAO powerofactionDAO;// 权限action业务类
//	private TSysPowerDAO powerDAO;// 权限业务类
//	private TSysCharacterDAO characterDAO;// 角色业务类
//	private TSysPowerofcharDAO powerofcharDAO;// 角色对应权限业务类
//	private TSysPowersystemDAO powersystemDAO;// 角色业务类
//	private TSysPowersystemofcharDAO powersystemofcharDAO;// 角色对应权限业务类
//	private static Log log = LogFactory.getLog(PowerService.class);
//
//	public TSysPowerofactionDAO getPowerofactionDAO() {
//		return powerofactionDAO;
//	}
//
//	public void setPowerofactionDAO(TSysPowerofactionDAO powerofactionDAO) {
//		this.powerofactionDAO = powerofactionDAO;
//	}
//
//	public TSysMenuDAO getMenuDAO() {
//		return menuDAO;
//	}
//
//	public void setMenuDAO(TSysMenuDAO menuDAO) {
//		this.menuDAO = menuDAO;
//	}
//
//	public TSysPowerDAO getPowerDAO() {
//		return powerDAO;
//	}
//
//	public void setPowerDAO(TSysPowerDAO powerDAO) {
//		this.powerDAO = powerDAO;
//	}
//
//	public TSysCharacterDAO getCharacterDAO() {
//		return characterDAO;
//	}
//
//	public void setCharacterDAO(TSysCharacterDAO characterDAO) {
//		this.characterDAO = characterDAO;
//	}
//
//	public TSysPowerofcharDAO getPowerofcharDAO() {
//		return powerofcharDAO;
//	}
//
//	public void setPowerofcharDAO(TSysPowerofcharDAO powerofcharDAO) {
//		this.powerofcharDAO = powerofcharDAO;
//	}
//
//	public TSysPowersystemDAO getPowersystemDAO() {
//		return powersystemDAO;
//	}
//
//	public void setPowersystemDAO(TSysPowersystemDAO powersystemDAO) {
//		this.powersystemDAO = powersystemDAO;
//	}
//
//	public TSysPowersystemofcharDAO getPowersystemofcharDAO() {
//		return powersystemofcharDAO;
//	}
//
//	public void setPowersystemofcharDAO(
//			TSysPowersystemofcharDAO powersystemofcharDAO) {
//		this.powersystemofcharDAO = powersystemofcharDAO;
//	}
//
//	/*
//	 * (non-Javadoc) 查找所有 系统权限
//	 * 
//	 * @see com.taskmanager.service.impl.PowerInter#findByPowerofaction()
//	 */
//	public List<TSysPowersystem> findByTSysPowersystem()
//			throws SystemRunException {
//		return powersystemDAO.findByStatus(true);
//	}
//
//	public String createTreeMenu(TSysUser userBean) throws Exception {
//		return menuDAO.createTreeMenu(userBean, StatusProperties.SystemType);
//	}
//
//	public PageBean menuList(TSysMenu menu, PageBean pb) throws  SystemRunException {
//		return this.menuDAO.list(menu, pb);
//	}
//
//	/**
//	 * 查找菜单 生成select
//	 */
//	public String findMenu(String menuId) throws SystemRunException {
//		try {
//			StringBuffer smenu = new StringBuffer();
//			List<TSysMenu> menuList = menuDAO.findMenu(1, StatusProperties.STATUS);
//			for (TSysMenu menu : menuList) {
//				if (menu.getId().equals(menuId)) {
//					continue;
//				}
//				smenu.append("<option value=" + menu.getId() + ">|--"
//						+ menu.getName() + "</option>");
//				List<TSysMenu> menuList1 = menuDAO.findMenu(
//						StatusProperties.ACTIONNAME, menu.getId(), 2,
//						StatusProperties.STATUS);
//				for (TSysMenu menu1 : menuList1) {
//					if (menu1.getId().equals(menuId)) {
//						continue;
//					}
//					if (menu1.getParentid().equals(menu.getId())) {
//						smenu.append("<option value=" + menu1.getId()
//								+ ">|&nbsp;&nbsp;|--" + menu1.getName()
//								+ "</option>");
//					}
//					List<TSysMenu> menuList2 = menuDAO.findMenu(
//							StatusProperties.ACTIONNAME, menu1.getId(), 3,
//							StatusProperties.STATUS);
//					for (TSysMenu menu2 : menuList2) {
//						if (menu2.getId().equals(menuId)) {
//							continue;
//						}
//						if (menu2.getParentid().equals(menu1.getId())) {
//							smenu.append("<option value=" + menu1.getId()
//									+ ">|&nbsp;&nbsp;|&nbsp;&nbsp;|--"
//									+ menu1.getName() + "</option>");
//						}
//					}
//				}
//			}
//			return smenu.toString();
//		} catch (HibernateException e) {
//			log.error("查找菜单 生成select 发生异常!" + e.getMessage());
//			throw new SystemRunException("查找菜单 生成select 发生异常!", e);
//		}
//	}
//
//	/**
//	 * 添加菜单
//	 */
//	public void addMenu(TSysMenu menu) throws SystemRunException {
//		try {
//			menu.setModtime(new Timestamp(System.currentTimeMillis()));
//			menu.setSystem(false);
//			if (StringUtils.isNotBlank(menu.getParentid())) {
//				Integer layer = menuDAO.findById(menu.getParentid()).getLayer();
//				menu.setLayer(layer + 1);
//			} else {
//				menu.setLayer(1);
//			}
//			menuDAO.save(menu);
//		} catch (HibernateException e) {
//			log.error("添加菜单发生异常!" + e.getMessage());
//			throw new SystemRunException("添加菜单发生异常!", e);
//		}
//	}
//
//	/**
//	 * 修改菜单信息
//	 */
//
//	public void updateMenu(TSysMenu menu) throws SystemRunException {
//		try {
//			menu.setModtime(new Timestamp(System.currentTimeMillis()));
//			menu.setSystem(false);
//			if (StringUtils.isNotBlank(menu.getParentid())) {
//				Integer layer = menuDAO.findById(menu.getParentid()).getLayer();
//				menu.setLayer(layer + 1);
//			} else {
//				menu.setLayer(1);
//			}
//			// 子菜单级别 更新 为当前菜单+1
//			List<TSysMenu> menuList = menuDAO.findByParentid(menu.getId());
//			int slayer = menu.getLayer() + 1;
//			for (TSysMenu smenu : menuList) {
//				smenu.setLayer(slayer);
//				menuDAO.attachDirty(smenu);
//			}
//			menuDAO.merge(menu);
//		} catch (HibernateException e) {
//			log.error("修改菜单发生异常!" + e.getMessage());
//			throw new SystemRunException("修改菜单发生异常!", e);
//		}
//	}
//
//	public TSysMenu findByMenuId(String id) throws SystemRunException {
//		return menuDAO.findById(id);
//	}
//
//	/**
//	 * 权限信息分页查询
//	 */
//	public PageBean powerList(TSysPower power, PageBean pb) throws  SystemRunException {
//		return this.powerDAO.list(power, pb);
//	}
//
//	public void addPower(TSysPower power) throws SystemRunException {
//		power.setModtime(new Timestamp(System.currentTimeMillis()));
//		powerDAO.save(power);
//	}
//
//	public void updatePower(TSysPower power) throws SystemRunException {
//		power.setModtime(new Timestamp(System.currentTimeMillis()));
//		powerDAO.merge(power);
//	}
//
//	public TSysPower findByPowerId(String id) throws SystemRunException {
//		return powerDAO.findById(id);
//	}
//
//	/**
//	 * 权限action分页查询
//	 */
//	public TSysPowerofaction findByPowerofactionId(String id)
//			throws SystemRunException {
//		return powerofactionDAO.findById(id);
//
//	}
//
//	public PageBean poweractionList(TSysPowerofaction power, PageBean pb)
//	throws  SystemRunException {
//		return this.powerofactionDAO.list(power, pb);
//	}
//
//	public void addPowerofaction(TSysPowerofaction power)
//			throws SystemRunException {
//		power.setModtime(new Timestamp(System.currentTimeMillis()));
//		powerofactionDAO.save(power);
//	}
//
//	public void updatePowerofaction(TSysPowerofaction power)
//			throws SystemRunException {
//		power.setModtime(new Timestamp(System.currentTimeMillis()));
//		powerofactionDAO.merge(power);
//	}
//
//	/**
//	 * 角色信息分页查询
//	 */
//	public PageBean characterList(TSysCharacter character, PageBean pb)
//	throws  SystemRunException {
//		return this.characterDAO.list(character, pb);
//	}
//
//	public void addCharacter(TSysCharacter character) throws SystemRunException {
//		character.setModtime(new Timestamp(System.currentTimeMillis()));
//		characterDAO.save(character);
//	}
//
//	public void updateCharacter(TSysCharacter character)
//			throws SystemRunException {
//		character.setModtime(new Timestamp(System.currentTimeMillis()));
//		characterDAO.merge(character);
//	}
//
//	public List<TSysPowerofchar> powerofcharList(String cid)
//			throws SystemRunException {
//		if (StringUtils.isBlank(cid)) {
//			throw new SystemRunException("角色id为空");
//		}
//		return this.powerofcharDAO.list(cid, StatusProperties.SQLSTATUS);
//	}
//
//	public List<TSysPowersystemofchar> powerSystemofcharList(String cid)
//			throws SystemRunException {
//		if (StringUtils.isBlank(cid)) {
//			throw new SystemRunException("角色id为空");
//		}
//		return this.powersystemofcharDAO.list(cid, StatusProperties.SQLSTATUS);
//	}
//
//	public TSysCharacter findByCharacterId(String id) throws SystemRunException {
//		return characterDAO.findById(id);
//	}
//
//	/**
//	 * 角色 修改对应权限信息
//	 */
//	public void updatePowerofchar(TSysCharacter character, String powerId)
//			throws SystemRunException {
//		try {
//			// 删除改角色对应权限信息
//			List<TSysPowerofchar> PowerofcharList = powerofcharDAO
//					.findPowerofcharBycharId(character.getId());
//			for (TSysPowerofchar powerChar : PowerofcharList) {
//				powerofcharDAO.delete(powerChar);
//			}
//		} catch (HibernateException e) {
//			log.error("删除角色对应菜单权限信息发生异常!" + e.getMessage());
//			throw new SystemRunException("删除角色对应菜单权限信息发生异常!", e);
//		}
//		try {
//			// 重新添加角色对应权限
//			String poweridString = powerId;
//			String[] powerIds = poweridString.split(",");
//			for (String power : powerIds) {
//				if (StringUtils.isNotBlank(power)) {
//					TSysPowerofchar powerofchar = new TSysPowerofchar();
//					powerofchar.setSysCharacter(character);
//					TSysPower sysPower = new TSysPower();
//					sysPower.setId(power);
//					powerofchar.setSysPower(sysPower);
//					powerofchar.setStatus(true);
//					powerofchar.setModperson(character.getModperson());
//					powerofchar.setModtime(new Timestamp(System
//							.currentTimeMillis()));
//					powerofcharDAO.save(powerofchar);
//				}
//			}
//		} catch (HibernateException e) {
//			log.error("保存角色对应菜单权限信息发生异常!" + e.getMessage());
//			throw new SystemRunException("保存角色对应菜单权限信息发生异常!", e);
//		}
//	}
//
//	/**
//	 * 角色 修改对应权限信息
//	 */
//	public void updatePowerSystemofchar(TSysCharacter character, String powerId)
//			throws SystemRunException {
//		try {
//			// 删除改角色对应权限信息
//			List<TSysPowersystemofchar> PowerofcharList = this.powersystemofcharDAO
//					.findPowerSystemofcharBycharId(character.getId());
//			for (TSysPowersystemofchar powerChar : PowerofcharList) {
//				powersystemofcharDAO.delete(powerChar);
//			}
//		} catch (HibernateException e) {
//			log.error("删除角色对应系统权限信息发生异常!" + e.getMessage());
//			throw new SystemRunException("删除角色对应系统权限信息发生异常!", e);
//		}
//		try {
//			// 重新添加角色对应权限
//			String poweridString = powerId;
//			String[] powerIds = poweridString.split(",");
//			for (String power : powerIds) {
//				if (StringUtils.isNotBlank(power)) {
//					TSysPowersystemofchar powerofchar = new TSysPowersystemofchar();
//					powerofchar.setTSysCharacter(character);
//					TSysPowersystem  sysPower= new TSysPowersystem();
//					sysPower.setId(power);
//					powerofchar.setId(CTools.createJHID());
//					powerofchar.setTSysPowersystem(sysPower);
//					powerofchar.setStatus(true);
//					powerofchar.setModperson(character.getModperson());
//					powerofchar.setModtime(new Timestamp(System
//							.currentTimeMillis()));
//					powersystemofcharDAO.save(powerofchar);
//				}
//			}
//		} catch (HibernateException e) {
//			log.error("保存角色对应系统权限信息发生异常!" + e.getMessage());
//			throw new SystemRunException("保存角色对应系统权限信息发生异常!", e);
//		}
//	}
//	
//	
//	public void deletePower(TSysPower power) throws SystemRunException {
//		power = powerDAO.findById(power.getId());
//		if (power == null) {
//			throw new SystemRunException("删除权限信息发生异常!");
//		}
//		this.powerDAO.delete(power);
//
//	}
//
//	public void deletePoweraction(TSysPowerofaction powernActio)
//			throws SystemRunException {
//		powernActio = powerofactionDAO.findById(powernActio.getId());
//		if (powernActio == null) {
//			throw new SystemRunException("删除权限action信息发生异常!");
//		}
//		this.powerofactionDAO.delete(powernActio);
//
//	}
//
//	public void addPowerSystem(TSysPowersystem powerSystem) {
//		powerSystem.setId(CTools.createJHID());
//		powerSystem.setModtime(new Timestamp(System.currentTimeMillis()));
//		powersystemDAO.save(powerSystem);
//	}
//
//	public TSysPowersystem findByPowerSystemId(String id) {
//		return this.powersystemDAO.findById(id);
//	}
//
//	public PageBean powerSystemList(TSysPowersystem powerSystem, PageBean pages) throws  SystemRunException  {
//		return this.powersystemDAO.list(powerSystem, pages);
//	}
//
//	public void updatePowerSystem(TSysPowersystem powerSystem) {
//		powerSystem.setModtime(new Timestamp(System.currentTimeMillis()));
//		powersystemDAO.merge(powerSystem);
//	}

}
